iT邦幫忙

0

Kotlin - 如果透過File appendText 直接進行文字寫檔以及原理解析

  • 分享至 

  • xImage
  •  

在以前Java中要進行寫檔是一個建很麻煩的事情,要記得create file,得到BufferReader後還要透過close 並且記得try catch避免exception發生,而kotlin提供了一個appendText的extension,讓你直接可以對file進行寫入文字

File("path\fileName.txt") .appendText("Hello")

如果你要持續寫入就可以變成

val file = File("path\fileName.txt")
file.appendText("Hello")
file.appendText(" World")
file.appendText(" :)")

如此就可以完成寫入文字了,也不需要額外的進行close 或者flush 那他實際是怎麼運作的? 他其實是一個kotlin extension

從source code可以看到他是在kotlin 1.4增加的 extension,並且他其實有兩個參數,第二個是encoding ,default value 是utf-8,如果你沒有要額外指定編碼,就不需要額外設定,

https://ithelp.ithome.com.tw/upload/images/20231002/20125654eUfWZMJc2V.png

而他呼叫了另一個appendText,並且先將String toBytesArray傳入

https://ithelp.ithome.com.tw/upload/images/20231002/201256544yP2IpaYf8.png

實際是透過FileOutputStream後透過use這個T.extension,透過他就可以直接對bytes寫入,並且在scope結束後會自動進行close ,也就是每一次的appendText,都會造成他馬上進行寫檔,因此如果你是一個大量快速的log,會比較不建議使用appendText,因為這樣會造成大量的IO,也可能會影響速度(大量的話會建議改成在一定buffer後才進行IO寫入)

https://ithelp.ithome.com.tw/upload/images/20231002/20125654faPPRBE3WK.png

以上就是File的appendText使用方法與原理,其實他還有writeTextreadTextwriteBytesreadLines等等其他方便使用的extension,對於要簡易進行文字寫入的話就可以參考並且理解看看他的原理囉。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言